package kassiopeia.commons.model.plugin;

import java.util.ArrayList;
import java.util.List;
import kassiopeia.commons.model.Coordinates;
import com.thoughtworks.xstream.annotations.XStreamAlias;
import com.thoughtworks.xstream.annotations.XStreamImplicit;

@XStreamAlias("plugin")
public final class PluginDescriptor {

    private Coordinates coordinates;
    private String description;
    private String author;

    @XStreamAlias("input-description")
    private String inputDescription;

    @XStreamImplicit(itemFieldName = "output")
    private List<Output> outputDescriptors = new ArrayList<Output>();

    @XStreamImplicit(itemFieldName = "parameter")
    private List<Parameter> configuration = new ArrayList<Parameter>();

    @XStreamAlias("plugin-class")
    private String pluginClass;

    public PluginDescriptor() {}

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public String getInputDescription() {
        return inputDescription;
    }

    public void setInputDescription(String inputDescription) {
        this.inputDescription = inputDescription;
    }

    public List<Output> getOutputDescriptors() {
        return outputDescriptors;
    }

    public void setOutputDescriptors(List<Output> outputDescriptors) {
        this.outputDescriptors = outputDescriptors;
    }

    public List<Parameter> getConfiguration() {
        return configuration;
    }

    public void setConfiguration(List<Parameter> configuration) {
        this.configuration = configuration;
    }

    public String getPluginClass() {
        return pluginClass;
    }

    public void setPluginClass(String pluginClass) {
        this.pluginClass = pluginClass;
    }

    public Coordinates getCoordinates() {
        return coordinates;
    }

    public void setCoordinates(Coordinates coordinates) {
        this.coordinates = coordinates;
    }
}
